//package com.boot2.core.web;
//
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletRequestWrapper;
//
///**
// * 请求包装对象 处理Xss
// *
// * @author zhangweilin
// * @date 2017年4月5日 下午2:53:37
// * @version V1.0
// * @description
// */
//public class XssHttpServletRequestWrapper_bak extends HttpServletRequestWrapper {
//	protected static Log loger = LogFactory.getLog(XssHttpServletRequestWrapper_bak.class);
//	HttpServletRequest lastOrgRequest = null;
//
//	public XssHttpServletRequestWrapper_bak(HttpServletRequest request) {
//		super(request);
//		lastOrgRequest = request;
//	}
//
//	/**
//	 * 覆盖getParameter方法，将参数名和参数值都做xss过滤
//	 */
//	@Override
//	public String getParameter(String name) {
//		String value = super.getParameter(xssEncode(name));
//		if (value != null) {
//			value = xssEncode(value);
//		}
//		return value;
//	}
//
//	/**
//	 * 覆盖getParameterValues方法，将参数名和参数值都做xss过滤
//	 */
//	@Override
//	public String[] getParameterValues(String parameter) {
//		String[] values = super.getParameterValues(parameter);
//		if (values == null) {
//			return null;
//		}
//		int count = values.length;
//		String[] encodedValues = new String[count];
//		for (int i = 0; i < count; i++) {
//			encodedValues[i] = xssEncode(values[i]);
//		}
//		return encodedValues;
//	}
//
//	/**
//	 * 获取request的属性时，做xss过滤
//	 */
//	@Override
//	public Object getAttribute(String name) {
//		// System.out.println("getAttribute: " + name);
//		Object value = super.getAttribute(name);
//		// System.out.println("value: " + value);
//		// if (null != value && value instanceof String)
//		// {
//		// value = xssEncode((String) value);
//		// }
//		return value;
//	};
//
//	/**
//	 * 覆盖getHeader方法，将参数名和参数值都做xss过滤。<br/>
//	 */
//	@Override
//	public String getHeader(String name) {
//		String value = super.getHeader(xssEncode(name));
//		if (value != null) {
//			value = xssEncode(value);
//		}
//		return value;
//	}
//
//	/**
//	 * 将容易引起xss漏洞的半角字符直接替换成全角字符
//	 *
//	 * @param s
//	 * @return
//	 */
//	private static String xssEncode(String s) {
//		// System.out.println("xssEncode2: " + s);
//		if (s == null || s.isEmpty()) {
//			return s;
//		}
//		try {
//			HTMLFilter htmlFilter = new HTMLFilter();
//			htmlFilter.setEncodeQuotes(false);
//			// String clean = htmlFilter.htmlSpecialChars(s);
//			s = s.trim();
//			String clean = htmlFilter.filter(s);
//			// String clean = StringEscapeUtils.escapeHtml4(s);
//
//			return clean;
//		} catch (NullPointerException e) {
//			return s;
//		} catch (Exception ex) {
//			ex.printStackTrace();
//			loger.error("xss过滤失败", ex);
//		}
//
//		return null;
//	}
//
//	/**
//	 * 获取最原始的request
//	 *
//	 * @return
//	 */
//	public HttpServletRequest getLastOrgRequest() {
//		return lastOrgRequest;
//	}
//
//	/**
//	 * 获取最原始的request的静态方法
//	 *
//	 * @return
//	 */
//	public static HttpServletRequest getLastOrgRequest(HttpServletRequest req) {
//		if (req instanceof XssHttpServletRequestWrapper_bak) {
//			return ((XssHttpServletRequestWrapper_bak) req).getLastOrgRequest();
//		}
//
//		return req;
//	}
//
//}
